package com.molichuxing.gateway.api.services;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.validation.BindingResult;

import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.gateway.bff.payment.entity.request.create.OrderPayCreateVo;
import com.molichuxing.gateway.bff.payment.entity.request.modify.AioPayResultModifyVo;
import com.molichuxing.gateway.bff.payment.entity.response.CashierDeskVo;
import com.molichuxing.gateway.bff.payment.entity.response.PaymentRecordVo;
import com.molichuxing.gateway.bff.payment.entity.response.PaymentResultVo;

public interface PaymentApiService {

	/**
	 * 获取收银台信息
	 * 
	 * @param orderCode
	 * @param scheduleId
	 * @param payType
	 * @return
	 */
	public ResponseResult<CashierDeskVo> cashierDesk(String token, Long orderCode, Integer scheduleId,
			Integer payType);

	/**
	 * 生成预支付单
	 * 
	 * @param createVo
	 * @return
	 */
	public ResponseResult<Map<String, String>> orderPay(String token, String cpu, HttpServletRequest request,
			OrderPayCreateVo createVo, BindingResult bindingResult);

	/**
	 * 大屏支付结果
	 * 
	 * @param token
	 * @param cpu
	 * @param modifyVo
	 * @return
	 */
	public ResponseResult<PaymentResultVo> aioPaymentResult(String token, String cpu, AioPayResultModifyVo modifyVo,
			BindingResult bindingResult);

	/**
	 * 查询支付结果
	 * 
	 * @param orderCode
	 * @param scheduleId
	 * @param costType
	 * @return
	 */
	public ResponseResult<PaymentResultVo> paymnetResult(String token, Long orderCode, Integer scheduleId,
			Integer costType);

	/**
	 * 查询用户支付记录
	 * 
	 * @param token
	 * @return
	 */
	public ResponseResult<List<PaymentRecordVo>> paymentRecord(String token);

}
